#pragma once
#include "std/map"
#include "std/vector"
#include "struct.hpp"
#include "NpcServer/NpcMgr.h"
#include "ScriptLib/BinBuf.h"
#include "ScriptEventHandler.h"


class CNpcEvent : public CScriptEventHandler
{
public:
	struct vtable_t // const CNpcEvent::`vftable'
	{
		bool (CNpcEvent::* OnFunc)(int, mystd::deque<TokenData>&, TokenData&);
		void (CNpcEvent::* OnError)(const char* str);
		void (CScriptEventHandler::* Free)(void);
		unsigned int (CNpcEvent::* Proc)(bool isOnce);
		bool (CNpcEvent::* FuncDialog)(char* str, int npcID);
		bool (CNpcEvent::* FuncCloseDialog)(int npcID);
		bool (CNpcEvent::* FuncWaitDialog)(int npcID);
		bool (CNpcEvent::* FuncDlgWriteStr)(int npcID);
		bool (CScriptEventHandler::* FuncMenu)(mystd::deque<TokenData>& parm, int npcID);
		bool (CNpcEvent::* FuncMapMove)(const char* zone, int x, int y);
		bool (CNpcEvent::* FuncSetEffectStatus)(int effectenum);
		void (CScriptEventHandler::* EventLog)(char*, ...);
	};

	/* this+  0 */ public: //CScriptEventHandler baseclass_0;
	/* static   */ public: static hook_val<int> m_serverID;
	/* this+124 */ private: CBinBuf* m_binBuf;
	/* this+128 */ private: CNpcMgr* m_npcMgr;
	/* this+132 */ private: CNpcMgr* m_mobMgr;
	/* this+136 */ private: CNpc* m_npc;
	/* this+140 */ private: int m_pcId;
	/* this+144 */ private: int m_npcId;
	/* this+148 */ private: int m_waitTime;
	/* this+152 */ private: int m_waitType;
	/* this+156 */ private: bool m_isDisableItemMove;
	/* this+160 */ private: int m_min;
	/* this+164 */ private: int m_max;
	/* this+168 */ private: int m_error;
	/* this+172 */ private: int m_input;
	/* this+176 */ private: bool m_dialogFlag;
	/* this+180 */ private: int m_curInitNpc;
	/* this+184 */ private: char m_dgIdent[4];
	/* this+188 */ private: unsigned int m_instantID;
	/* this+192 */ private: DWORD m_reserveTime;
	/* this+196 */ private: mystd::vector<int> m_initList;
	/* this+212 */ private: bool m_OnInit;
	/* this+216 */ private: mystd::map<int,int> m_numArray;

	//public: void CNpcEvent::CNpcEvent();
	//public: void CNpcEvent::~CNpcEvent();
	//public: void CNpcEvent::Clear();
	//public: void CNpcEvent::End();
	//public: bool CNpcEvent::IsEmpty();
	//public: char* CNpcEvent::GetDungeonIdent();
	//public: bool CNpcEvent::Run_Dungeon(CNpcMgr *, CBinBuf *, const char *, unsigned int, int, int, int);
	public: bool CNpcEvent::Run(CNpcMgr* npcMgr, CBinBuf* binBuf, int pcId, int npcId, int actIndex);
	public: void CNpcEvent::RegisterMobMgr(CNpcMgr* mobMgr);
	public: virtual unsigned int CNpcEvent::Proc(bool isOnce);
	//public: void CNpcEvent::Answer(int, int);
	public: virtual bool CNpcEvent::OnFunc(int func, mystd::deque<TokenData>& parm, TokenData& ret);
	//public: virtual void CNpcEvent::OnError(const char* str);
	public: void CNpcEvent::Stop(void);
	//public: void CNpcEvent::StopDungern();
	//public: CNpc* CNpcEvent::GetNpc();
	public: void CNpcEvent::SetReserveTime(DWORD reserveTime);
	public: DWORD CNpcEvent::GetReserveTime(void);
	//public: bool CNpcEvent::IsGlobalEvent();
	public: bool CNpcEvent::GetOnInit(void);
	public: void CNpcEvent::SetOnInit(bool oninit);
	//private: int CNpcEvent::GetCharacterVar(int, int);
	private: bool CNpcEvent::GlobalFunc(int func, mystd::deque<TokenData>& parm, TokenData& ret);
	private: bool CNpcEvent::DefaultNpcFunc(int func, mystd::deque<TokenData>& parm, TokenData& ret);
	private: bool CNpcEvent::FuncChangePallete(int where, int type);
	private: bool CNpcEvent::FuncCallMonster(char* zone, int mobId, char* mobName, int posX, int posY, int weight, int height, int num);
	private: bool CNpcEvent::FuncAddSkill(int skillId, int level, int state, int percent);
	private: bool CNpcEvent::FuncOtherNpcCmd(const char* str, char* eventStr);
	private: bool CNpcEvent::FuncStrLocalVar(int varSlot, char* str);
	private: bool CNpcEvent::FuncSetArenaEventSize(int no);
	private: bool CNpcEvent::FuncGetArenaEventSize(TokenData& ret);
	private: bool CNpcEvent::FuncMakeWaitingRoom(char* title, int num);
	private: bool CNpcEvent::FuncEnableArena(void);
	private: bool CNpcEvent::FuncDisableArena(void);
	private: bool CNpcEvent::FuncWarpWaitingPcToArena(char* str, int posx, int posy);
	private: bool CNpcEvent::FuncResetMyMob(void);
	private: bool CNpcEvent::FuncWarpAllPcInTheMap(char* str, int posx, int posy);
	private: bool CNpcEvent::FuncBroadcastInTheMap(char* str);
	private: bool CNpcEvent::FuncAddNpcTimer(char* str, int num);
	private: bool CNpcEvent::FuncSubNpcTimer(char* str, int num);
	private: bool CNpcEvent::FuncEnableNpc(char* str);
	private: bool CNpcEvent::FuncDisableNpc(char* str);
	private: bool CNpcEvent::FuncCallNpc(char* zone, int npcType, char* npcName, int spriteType, int posX, int posY);
	private: bool CNpcEvent::FuncSetFeeZeny(int money);
	private: bool CNpcEvent::FuncSetFeeItem(int item, int num);
	private: bool CNpcEvent::FuncSetReqLevel(int lowlevel, int highlevel);
	private: bool CNpcEvent::FuncSetTexJob(int job);
	private: bool CNpcEvent::FuncDisableItemMove(void);
	private: bool CNpcEvent::FuncEnableItemMove(void);
	private: bool CNpcEvent::FuncSuccessRefItem(int part);
	private: bool CNpcEvent::FuncFailedRefItem(int part);
	private: virtual bool CNpcEvent::FuncSetEffectStatus(int effectenum);
	private: bool CNpcEvent::FuncResetStat(void);
	private: bool CNpcEvent::FuncTrace(char* str);
	private: bool CNpcEvent::FuncVar(int p, TokenData& ret);
	private: bool CNpcEvent::FuncLV(char* varName, TokenData& ret);
	private: bool CNpcEvent::FuncNpcV(char* name, int p, TokenData& ret);
	private: bool CNpcEvent::FuncIncLocalVar(char* varName, int val);
	private: bool CNpcEvent::FuncDecLocalVar(char* varName, int val);
	private: bool CNpcEvent::FuncSetLocalVar(char* varName, int val);
	private: bool CNpcEvent::FuncGetEquipIsIdentify(int part, TokenData& ret);
	private: bool CNpcEvent::FuncGetEquipRefineryCnt(int part, TokenData& ret);
	private: bool CNpcEvent::FuncGetEquipRefineryCost(int part, TokenData& ret);
	private: bool CNpcEvent::FuncGetEquipName(int part, TokenData& ret);
	private: bool CNpcEvent::FuncGetEquipItemIdx(int part, TokenData& ret);
	private: bool CNpcEvent::FuncGetEquipWeaponLv(int part, TokenData& ret);
	private: bool CNpcEvent::FuncGetEquipIsEnableRef(int part, TokenData& ret);
	//private: bool CNpcEvent::FuncLastNpcName(char *);
	private: bool CNpcEvent::FuncInitTimer(void);
	private: bool CNpcEvent::FuncLabel(int act, mystd::deque<TokenData>& parm);
	//private: bool CNpcEvent::FuncRegSay(char *);
	//private: bool CNpcEvent::FuncRegMapMove(const char *, int, int);
	private: bool CNpcEvent::FuncRegSellItem(int item);
	private: bool CNpcEvent::FuncMob(int id, NpcSvrNpcInfo* npcInfo);
	private: bool CNpcEvent::FuncCompass(int id, int x, int y, int type, const char* color);
	private: bool CNpcEvent::FuncNpc(NpcSvrNpcInfo* npcInfo, bool isNpc);
	private: unsigned long CNpcEvent::FuncNpc2(NpcSvrNpcInfo* npcInfo, bool isNpc);
	private: bool CNpcEvent::FuncInput(TokenData& ret);
	private: bool CNpcEvent::FuncDlgWrite(int min, int max);
	private: bool CNpcEvent::FuncNude(void);
	private: bool CNpcEvent::FuncCart(int flag);
	private: bool CNpcEvent::FuncStore(void);
	private: bool CNpcEvent::FuncMenu(const char* str, bool bExtra);
	private: bool CNpcEvent::FuncJobChange(int job);
	private: bool CNpcEvent::FuncGetMoney(int amount);
	private: bool CNpcEvent::FuncDropMoney(int amount, TokenData& ret);
	private: bool CNpcEvent::FuncSetItem(int item, int num);
	private: bool CNpcEvent::FuncGetItem(int item, int num);
	private: bool CNpcEvent::FuncDropItem(int item, int num);
	private: bool CNpcEvent::FuncExchangeItem(int srcItem, int srcNum, int destItem, int destNum);
	private: bool CNpcEvent::FuncInc(int var, int num);
	private: bool CNpcEvent::FuncDec(int var, int num);
	private: bool CNpcEvent::FuncHeal(int var, int percent);
	//private: bool CNpcEvent::FuncRand(int, int, TokenData &);
	private: bool CNpcEvent::FuncLot(int numerator, int denominator, TokenData& ret);
	private: bool CNpcEvent::FuncGetPcCount(const char* pszMapName, TokenData& ret);
	private: bool CNpcEvent::FuncError(TokenData& ret);
	private: bool CNpcEvent::FuncCheckPoint(const char* zone, int x, int y);
	private: bool CNpcEvent::FuncShowDigit(int digit);
	private: bool CNpcEvent::FuncEnableSkill(int skill, int level);
	private: bool CNpcEvent::FuncDisableSkill(int skill);
	private: bool CNpcEvent::FuncSetParameter(int type, int value);
	private: bool CNpcEvent::FuncEmotion(char* name, int emotion);
	private: bool CNpcEvent::FuncChangeSpr(char* name, int sprite);
	private: bool CNpcEvent::FuncGetEquipCount(int item, TokenData& ret);
	private: bool CNpcEvent::FuncAgitGet(char* mapName, int n, TokenData& ret);
	private: bool CNpcEvent::FuncAgitSet(int n, int data);
	private: bool CNpcEvent::FuncAgitFunc(int func, int parm1, int parm2);
	private: bool CNpcEvent::FuncAgitNpcGet(int guardian, int n, TokenData& ret);
	private: bool CNpcEvent::FuncAgitNpcSet(int guardian, int n, int data);
	private: bool CNpcEvent::FuncIsGuildMaster(int guildID, TokenData& ret);
	private: bool CNpcEvent::FuncAgitRegister(char* name);
	private: bool CNpcEvent::FuncBroadcast(bool isServerSide, char* color, int fontType, int fontSize, int fontAlign, int fontY, char* str);
	private: bool CNpcEvent::FuncSound(char* filename, int range, int act, int term);
	private: bool CNpcEvent::FuncGetDamagedItemNum(TokenData& ret);
	private: bool CNpcEvent::FuncRepairDamagedItem(void);
	private: bool CNpcEvent::FuncSavePPL(int item);
	private: bool CNpcEvent::FuncAgitEmblemFlag(char* name);
	private: bool CNpcEvent::FuncChangeEXP(int amount);
	private: bool CNpcEvent::FuncServerTime(TokenData& ret);
	private: bool CNpcEvent::FuncGetLocalVarName(int index, TokenData& ret);
	private: bool CNpcEvent::FuncGetMarried(TokenData& ret);
	private: bool CNpcEvent::FuncGetGuildName(TokenData& ret);
	private: bool CNpcEvent::FuncCountDown(int time);
	private: bool CNpcEvent::FuncGetNeighborPcNumber(int Range, TokenData& ret);
	private: bool CNpcEvent::FuncGetNamedItem(int item, int num);
	private: bool CNpcEvent::FuncDropNamedItem(int item, int num);
	private: bool CNpcEvent::FuncGetCountOfMyNameItem(int item, TokenData& ret);
	private: bool CNpcEvent::FuncChangeHairStyle(int hair);
	private: bool CNpcEvent::FuncShowEffect(const char* name, int effect);
	private: bool CNpcEvent::FuncFalcon(int flag);
	private: bool CNpcEvent::FuncPeco(int flag);
	private: bool CNpcEvent::FuncCheckMaxZeny(int zeny, TokenData& ret);
	private: bool CNpcEvent::FuncCheckMaxCount(int item, int count, TokenData& ret);
	private: bool CNpcEvent::FuncCheckMaxWeight(int item, int count, TokenData& ret);
	private: bool CNpcEvent::FuncMGetEventItem(int index, TokenData& ret);
	private: bool CNpcEvent::FuncMGetEventZeny(int index, TokenData& ret);
	private: bool CNpcEvent::FuncMGetEventItemName(int index, TokenData& ret);
	private: bool CNpcEvent::FuncMGetEventZenyName(int index, TokenData& ret);
	private: bool CNpcEvent::FuncCreateGuild(char* guildname);
	private: bool CNpcEvent::FuncCreateGlobalVar(const char* name, int value);
	private: bool CNpcEvent::FuncGetGlobalVar(const char* name, TokenData& ret);
	private: bool CNpcEvent::FuncSetGlobalVar(const char* name, int value);
	private: bool CNpcEvent::FuncStrCmp(const char* str1, const char* str2, TokenData& ret);
	private: bool CNpcEvent::FuncStrStr(const char* str1, const char* str2, TokenData& ret);
	private: bool CNpcEvent::FuncUpgradeGuildLevel(void);
	private: bool CNpcEvent::FuncCreateGlobalStr(const char* name, char* value);
	private: bool CNpcEvent::FuncGetGlobalStr(const char* name, TokenData& ret);
	private: bool CNpcEvent::FuncSetGlobalStr(const char* name, char* value);
	private: bool CNpcEvent::FuncDivorce(void);
	private: bool CNpcEvent::FuncPEventGet(TokenData& ret);
	private: bool CNpcEvent::FuncPEventAdd(int addPoint, TokenData& ret);
	private: bool CNpcEvent::FuncPEventDel(int delPoint, TokenData& ret);
	private: bool CNpcEvent::FuncPCDataMoveToPVP(void);
	private: bool CNpcEvent::FuncMGetEventItemID(int index, TokenData& ret);
	private: bool CNpcEvent::FuncGetJobExp(int jobexp);
	private: bool CNpcEvent::FuncDropJobExp(int jobexp);
	private: bool CNpcEvent::FuncChkSkill(int SKID, TokenData& ret);
	private: bool CNpcEvent::FuncGetBodyState(int bodystate, int time);
	private: bool CNpcEvent::FuncGetHealthState(int healthstate, int time);
	private: bool CNpcEvent::FuncUseSkillToPC(int SKID, int skLevel, int sppoint, int clevel);
	private: bool CNpcEvent::FuncIsBaby(TokenData& ret);
	private: bool CNpcEvent::FuncGetLotto(int index, TokenData& ret);
	private: bool CNpcEvent::FuncSetLotto(int n1, int n2, int n3, int n4, int n5, int n6);
	private: bool CNpcEvent::FuncInitLotto(void);
	private: bool CNpcEvent::FuncOpenAuction(void);
	private: bool CNpcEvent::FuncOpenMailing(void);
	private: bool CNpcEvent::FuncStripPC(int time);
	private: bool CNpcEvent::FuncPushPC(int dir, int cell);
	private: bool CNpcEvent::FuncItemDown(int itemID, int count, int x, int y);
	private: bool CNpcEvent::FuncSetNumArray(int index, int value);
	private: bool CNpcEvent::FuncGetNumArray(int index, TokenData& ret);
	private: bool CNpcEvent::FuncShuffleNumbers(int small, int big);
	private: bool CNpcEvent::FuncPartyName(TokenData& ret);
	private: bool CNpcEvent::FuncChangeSpeed(int percent, int time);
	private: bool CNpcEvent::FuncIsSiegeTime(TokenData& ret);
	private: bool CNpcEvent::FuncConsumeSpecialItem(int ITID);
	private: bool CNpcEvent::FuncSetItemPartyInMap(int item, int count);
	private: bool CNpcEvent::FuncIsHuntingListFull(TokenData& ret);
	private: bool CNpcEvent::FuncFindHuntingList(int mob, TokenData& ret);
	private: bool CNpcEvent::FuncAddHuntingList(int mob);
	private: bool CNpcEvent::FuncDeleteHuntingList(int mob);
	private: bool CNpcEvent::FuncDisplayHuntingList(TokenData& ret);
	private: bool CNpcEvent::FuncDisplayHuntingList2(TokenData& ret);
	private: bool CNpcEvent::FuncSetHuntingList(int mob, int count);
	private: bool CNpcEvent::FuncClearHuntingList(void);
	private: bool CNpcEvent::FUNCUseHuntingList(TokenData& ret);
	private: bool CNpcEvent::FUNCCheckHuntingList(int mob, TokenData& ret);
	private: bool CNpcEvent::FuncIsTimeListFull(TokenData& ret);
	private: bool CNpcEvent::FuncFindTimeList(int ti, TokenData& ret);
	private: bool CNpcEvent::FuncAddTimeList(int ti);
	private: bool CNpcEvent::FuncDeleteTimeList(int ti);
	private: bool CNpcEvent::FuncDisplayTimeList(TokenData& ret);
	private: bool CNpcEvent::FuncSetTimeList(int ti, int dt);
	private: bool CNpcEvent::FuncClearTimeList(void);
	private: bool CNpcEvent::FuncChangeCellType(int x, int y, int type);
	private: bool CNpcEvent::FuncGetCellType(int x, int y, TokenData& ret);
	//private: bool CNpcEvent::FuncIsPcCafe(TokenData &);
	private: bool CNpcEvent::FuncGetPayType(TokenData& ret);
	private: bool CNpcEvent::FuncGetConnectionArea(TokenData& ret);
	private: bool CNpcEvent::FuncGetConnectionState(TokenData& ret);
	//private: bool CNpcEvent::FuncIsPremiumPcCafe(TokenData &);
	private: bool CNpcEvent::FuncGetPetEgg(int mobType);
	private: bool CNpcEvent::FuncCashItem(char* cashShop);
	//private: bool CNpcEvent::FuncMovePos(int, int);
	//private: bool CNpcEvent::FuncMoveWait(int);
	private: bool CNpcEvent::FuncRefinery(int part, TokenData& ret);
	private: bool CNpcEvent::FuncRelaodMobileEvent(void);
	private: bool CNpcEvent::FuncSetTempTime(int part);
	private: bool CNpcEvent::FuncElapseTempTime(int part, TokenData& ret);
	private: bool CNpcEvent::FuncGetInventoryRemainCount(int itemID, int count, TokenData& ret);
	private: bool CNpcEvent::FuncIsBeginQuest(int qid, TokenData& ret);
	private: bool CNpcEvent::FuncSetQuest(int qid);
	private: bool CNpcEvent::FuncChangQuest(int oldQID, int newQID);
	private: bool CNpcEvent::FuncEraseQuest(int qid);
	private: bool CNpcEvent::FuncComplateQuest(int qid);
	private: bool CNpcEvent::FuncCompleteQuest_Between(int startQID, int endQID);
	private: bool CNpcEvent::FuncRecall_CompleteQuest(int questID);
	private: bool CNpcEvent::FuncCheckQuest_Hunting(int qid, TokenData& ret);
	private: bool CNpcEvent::FuncCheckQuest_PlayTime(int qid, TokenData& ret);
	//private: bool CNpcEvent::FuncPCDataMoveTo_Sakray();
	private: bool CNpcEvent::FuncCallGuardian(char* zone, int mobId, char* mobName, int posX, int posY);
	private: bool CNpcEvent::FuncGetLastSiegeMsg(char* mapName, TokenData& ret);
	private: virtual bool CNpcEvent::FuncDialog(char* str, int npcID);
	private: virtual bool CNpcEvent::FuncWaitDialog(int npcID);
	private: virtual bool CNpcEvent::FuncCloseDialog(int npcID);
	private: virtual bool CNpcEvent::FuncDlgWriteStr(int npcID);
	private: virtual bool CNpcEvent::FuncMapMove(const char* zone, int x, int y);
	private: bool CNpcEvent::FuncMdungeon_Subscription(const char* in_pMemorialDungeonName, TokenData& out_ret);
	private: bool CNpcEvent::FuncMdungeon_Enter(const char* in_pMemorialDungeonName, TokenData& out_ret);
	private: bool CNpcEvent::FuncMdungeon_List(const char* in_pTitle, const char* in_pMdunTitle, const char* in_pPartyTitle);
	private: bool CNpcEvent::FuncMdungeon_Destroy(const char* in_pPartyName);
	private: bool CNpcEvent::FuncMdungeon_OpenState(const int in_Request, TokenData& out_ret);
	private: bool CNpcEvent::FuncMDungeon_NpcName(const char* name, TokenData& out_ret);
	private: bool CNpcEvent::FuncMDungeon_MapName(const char* map_name, TokenData& out_ret);
	private: bool CNpcEvent::FuncMDungeon_Npc(NpcSvrNpcInfo* npcInfo, bool isNpc);
	private: bool CNpcEvent::FuncMDungeon_PutMob(const char* zone, int x, int y, int w, int h, int num, int mobId, int regenMin, int regenMax, int regenType, char* name);
	private: bool CNpcEvent::FuncCampCode(char* campCode, int x, int y);
	private: bool CNpcEvent::FuncGetCampCode(TokenData& ret);
	private: bool CNpcEvent::FuncCallCampMob(int mobID, int x, int y, char* campCode, char* name);
	private: bool CNpcEvent::FuncSetRP2(int x, int y);
	private: bool CNpcEvent::FuncMassSetRP2(char* campCode, int x, int y);
	private: bool CNpcEvent::FuncPlayerToRP(int RPNo);
	private: bool CNpcEvent::FuncUpdateCampPoint(char* campCode, int point);
	private: bool CNpcEvent::FuncGetCampPoint(char* campCode, TokenData& ret);
	private: bool CNpcEvent::FuncResetCampPoint(void);
	private: bool CNpcEvent::FuncMyMobSkillUse(const char* mobName, int skill, int level, int time, int chatNo);
	private: bool CNpcEvent::FuncWhereMyMob_X(const char* mobName, TokenData& ret);
	private: bool CNpcEvent::FuncWhereMyMob_Y(const char* mobName, TokenData& ret);
	private: bool CNpcEvent::FuncWideMobSkillUse(int x, int y, int range, int skill_id, int level, int time, int msgId);
	private: bool CNpcEvent::FuncWideMobSkillUse2(MSG_TYPE7_EIGHTWORD* data);
	private: bool CNpcEvent::FuncCheckSiegeTime(int type, TokenData& ret);
	private: bool CNpcEvent::FuncIsBender(TokenData& ret);
	private: bool CNpcEvent::FuncGetNpcPosition(const char* ask, TokenData& ret);
	//private: bool CNpcEvent::FuncChangMoveSpeed(int);
	private: bool CNpcEvent::FuncProgressBar(const char* color, int time);
	private: bool CNpcEvent::FuncMercenaryCheck(TokenData& ret);
	private: bool CNpcEvent::FuncMercenaryType(TokenData& ret);
	private: bool CNpcEvent::FuncIsFreeServer(TokenData& ret);
	private: bool CNpcEvent::FuncCheckPartyJob(TokenData& ret);
	private: bool CNpcEvent::FuncClearBuff(void);
	private: bool CNpcEvent::FuncCheckAlive(const char* camp_code, TokenData& ret);
	private: bool CNpcEvent::FuncKVMNpc(NpcSvrNpcInfo* npcInfo);
	private: bool CNpcEvent::FuncKVMStartAliveCheck(void);
	private: bool CNpcEvent::FuncPVPRankCheck(TokenData& ret);
	private: bool CNpcEvent::FuncKvm_Npc_Noti(const char* sw);
	private: bool CNpcEvent::FuncGetItemSocket(const int itemId, const int card1, const int card2, const int card3, const int card4);
	private: bool CNpcEvent::FuncGetNonSlotItemSocket(const int itemId, const int card1, const int card2, const int card3, const int card4);
	private: bool CNpcEvent::FuncGetMyMercenary(TokenData& ret);
	private: bool CNpcEvent::FuncErrorLog(const char* log);
	private: bool CNpcEvent::FuncIsMadogear(TokenData& ret);
	private: bool CNpcEvent::FuncSetMadogear(const char* opt);
	private: bool CNpcEvent::FuncBattlePlayModeNoti(int type);
	private: bool CNpcEvent::FuncInterOther(const int other, const int par1, const int par2, const int par3);
	//private: bool CNpcEvent::GetNpcParm(NpcSvrNpcInfo *);
	private: void CNpcEvent::TraceCurPos(void);
	//private: void CNpcEvent::Wait(int, int);
	//private: CAgitMapRes* CNpcEvent::GetAgit(char *);
	//private: CBattleFieldMapRes* CNpcEvent::GetCurrentBattleFieldMapRes();

private:
	static hook_method<bool (CNpcEvent::*)(CNpcMgr* npcMgr, CBinBuf* binBuf, int pcId, int npcId, int actIndex)> CNpcEvent::_Run;
	static hook_method<void (CNpcEvent::*)(CNpcMgr* mobMgr)> CNpcEvent::_RegisterMobMgr;
	static hook_method<unsigned int (CNpcEvent::*)(bool isOnce)> CNpcEvent::_Proc;
	static hook_method<bool (CNpcEvent::*)(int func, mystd::deque<TokenData>& parm, TokenData& ret)> CNpcEvent::_OnFunc;
	static hook_method<void (CNpcEvent::*)(void)> CNpcEvent::_Stop;
	static hook_method<void (CNpcEvent::*)(DWORD reserveTime)> CNpcEvent::_SetReserveTime;
	static hook_method<DWORD (CNpcEvent::*)(void)> CNpcEvent::_GetReserveTime;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_GetOnInit;
	static hook_method<void (CNpcEvent::*)(bool oninit)> CNpcEvent::_SetOnInit;
	static hook_method<bool (CNpcEvent::*)(int func, mystd::deque<TokenData>& parm, TokenData& ret)> CNpcEvent::_GlobalFunc;
	static hook_method<bool (CNpcEvent::*)(int func, mystd::deque<TokenData>& parm, TokenData& ret)> CNpcEvent::_DefaultNpcFunc;
	static hook_method<bool (CNpcEvent::*)(int where, int type)> CNpcEvent::_FuncChangePallete;
	static hook_method<bool (CNpcEvent::*)(char* zone, int mobId, char* mobName, int posX, int posY, int weight, int height, int num)> CNpcEvent::_FuncCallMonster;
	static hook_method<bool (CNpcEvent::*)(int skillId, int level, int state, int percent)> CNpcEvent::_FuncAddSkill;
	static hook_method<bool (CNpcEvent::*)(const char* str, char* eventStr)> CNpcEvent::_FuncOtherNpcCmd;
	static hook_method<bool (CNpcEvent::*)(int varSlot, char* str)> CNpcEvent::_FuncStrLocalVar;
	static hook_method<bool (CNpcEvent::*)(int no)> CNpcEvent::_FuncSetArenaEventSize;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncGetArenaEventSize2;
	static hook_method<bool (CNpcEvent::*)(char* title, int num)> CNpcEvent::_FuncMakeWaitingRoom;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncEnableArena;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncDisableArena;
	static hook_method<bool (CNpcEvent::*)(char* str, int posx, int posy)> CNpcEvent::_FuncWarpWaitingPcToArena;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncResetMyMob;
	static hook_method<bool (CNpcEvent::*)(char* str, int posx, int posy)> CNpcEvent::_FuncWarpAllPcInTheMap;
	static hook_method<bool (CNpcEvent::*)(char* str)> CNpcEvent::_FuncBroadcastInTheMap;
	static hook_method<bool (CNpcEvent::*)(char* str, int num)> CNpcEvent::_FuncAddNpcTimer;
	static hook_method<bool (CNpcEvent::*)(char* str, int num)> CNpcEvent::_FuncSubNpcTimer;
	static hook_method<bool (CNpcEvent::*)(char* str)> CNpcEvent::_FuncEnableNpc;
	static hook_method<bool (CNpcEvent::*)(char* str)> CNpcEvent::_FuncDisableNpc;
	static hook_method<bool (CNpcEvent::*)(char* zone, int npcType, char* npcName, int spriteType, int posX, int posY)> CNpcEvent::_FuncCallNpc;
	static hook_method<bool (CNpcEvent::*)(int money)> CNpcEvent::_FuncSetFeeZeny;
	static hook_method<bool (CNpcEvent::*)(int item, int num)> CNpcEvent::_FuncSetFeeItem;
	static hook_method<bool (CNpcEvent::*)(int lowlevel, int highlevel)> CNpcEvent::_FuncSetReqLevel;
	static hook_method<bool (CNpcEvent::*)(int job)> CNpcEvent::_FuncSetTexJob;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncDisableItemMove;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncEnableItemMove;
	static hook_method<bool (CNpcEvent::*)(int part)> CNpcEvent::_FuncSuccessRefItem;
	static hook_method<bool (CNpcEvent::*)(int part)> CNpcEvent::_FuncFailedRefItem;
	static hook_method<bool (CNpcEvent::*)(int effectenum)> CNpcEvent::_FuncSetEffectStatus;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncResetStat;
	static hook_method<bool (CNpcEvent::*)(char* str)> CNpcEvent::_FuncTrace;
	static hook_method<bool (CNpcEvent::*)(int p, TokenData& ret)> CNpcEvent::_FuncVar;
	static hook_method<bool (CNpcEvent::*)(char* varName, TokenData& ret)> CNpcEvent::_FuncLV;
	static hook_method<bool (CNpcEvent::*)(char* name, int p, TokenData& ret)> CNpcEvent::_FuncNpcV;
	static hook_method<bool (CNpcEvent::*)(char* varName, int val)> CNpcEvent::_FuncIncLocalVar;
	static hook_method<bool (CNpcEvent::*)(char* varName, int val)> CNpcEvent::_FuncDecLocalVar;
	static hook_method<bool (CNpcEvent::*)(char* varName, int val)> CNpcEvent::_FuncSetLocalVar;
	static hook_method<bool (CNpcEvent::*)(int part, TokenData& ret)> CNpcEvent::_FuncGetEquipIsIdentify;
	static hook_method<bool (CNpcEvent::*)(int part, TokenData& ret)> CNpcEvent::_FuncGetEquipRefineryCnt;
	static hook_method<bool (CNpcEvent::*)(int part, TokenData& ret)> CNpcEvent::_FuncGetEquipRefineryCost;
	static hook_method<bool (CNpcEvent::*)(int part, TokenData& ret)> CNpcEvent::_FuncGetEquipName;
	static hook_method<bool (CNpcEvent::*)(int part, TokenData& ret)> CNpcEvent::_FuncGetEquipItemIdx;
	static hook_method<bool (CNpcEvent::*)(int part, TokenData& ret)> CNpcEvent::_FuncGetEquipWeaponLv;
	static hook_method<bool (CNpcEvent::*)(int part, TokenData& ret)> CNpcEvent::_FuncGetEquipIsEnableRef;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncInitTimer;
	static hook_method<bool (CNpcEvent::*)(int act, mystd::deque<TokenData>& parm)> CNpcEvent::_FuncLabel;
	static hook_method<bool (CNpcEvent::*)(int item)> CNpcEvent::_FuncRegSellItem;
	static hook_method<bool (CNpcEvent::*)(int id, NpcSvrNpcInfo* npcInfo)> CNpcEvent::_FuncMob;
	static hook_method<bool (CNpcEvent::*)(int id, int x, int y, int type, const char* color)> CNpcEvent::_FuncCompass;
	static hook_method<bool (CNpcEvent::*)(NpcSvrNpcInfo* npcInfo, bool isNpc)> CNpcEvent::_FuncNpc;
	static hook_method<unsigned long (CNpcEvent::*)(NpcSvrNpcInfo* npcInfo, bool isNpc)> CNpcEvent::_FuncNpc2;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncInput;
	static hook_method<bool (CNpcEvent::*)(int min, int max)> CNpcEvent::_FuncDlgWrite;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncNude;
	static hook_method<bool (CNpcEvent::*)(int flag)> CNpcEvent::_FuncCart;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncStore;
	static hook_method<bool (CNpcEvent::*)(const char* str, bool bExtra)> CNpcEvent::_FuncMenu;
	static hook_method<bool (CNpcEvent::*)(int job)> CNpcEvent::_FuncJobChange;
	static hook_method<bool (CNpcEvent::*)(int amount)> CNpcEvent::_FuncGetMoney;
	static hook_method<bool (CNpcEvent::*)(int amount, TokenData& ret)> CNpcEvent::_FuncDropMoney;
	static hook_method<bool (CNpcEvent::*)(int item, int num)> CNpcEvent::_FuncSetItem;
	static hook_method<bool (CNpcEvent::*)(int item, int num)> CNpcEvent::_FuncGetItem;
	static hook_method<bool (CNpcEvent::*)(int item, int num)> CNpcEvent::_FuncDropItem;
	static hook_method<bool (CNpcEvent::*)(int srcItem, int srcNum, int destItem, int destNum)> CNpcEvent::_FuncExchangeItem;
	static hook_method<bool (CNpcEvent::*)(int var, int num)> CNpcEvent::_FuncInc;
	static hook_method<bool (CNpcEvent::*)(int var, int num)> CNpcEvent::_FuncDec;
	static hook_method<bool (CNpcEvent::*)(int var, int percent)> CNpcEvent::_FuncHeal;
	static hook_method<bool (CNpcEvent::*)(int numerator, int denominator, TokenData& ret)> CNpcEvent::_FuncLot;
	static hook_method<bool (CNpcEvent::*)(const char* pszMapName, TokenData& ret)> CNpcEvent::_FuncGetPcCount;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncError;
	static hook_method<bool (CNpcEvent::*)(const char* zone, int x, int y)> CNpcEvent::_FuncCheckPoint;
	static hook_method<bool (CNpcEvent::*)(int digit)> CNpcEvent::_FuncShowDigit;
	static hook_method<bool (CNpcEvent::*)(int skill, int level)> CNpcEvent::_FuncEnableSkill;
	static hook_method<bool (CNpcEvent::*)(int skill)> CNpcEvent::_FuncDisableSkill;
	static hook_method<bool (CNpcEvent::*)(int type, int value)> CNpcEvent::_FuncSetParameter;
	static hook_method<bool (CNpcEvent::*)(char* name, int emotion)> CNpcEvent::_FuncEmotion;
	static hook_method<bool (CNpcEvent::*)(char* name, int sprite)> CNpcEvent::_FuncChangeSpr;
	static hook_method<bool (CNpcEvent::*)(int item, TokenData& ret)> CNpcEvent::_FuncGetEquipCount;
	static hook_method<bool (CNpcEvent::*)(char* mapName, int n, TokenData& ret)> CNpcEvent::_FuncAgitGet;
	static hook_method<bool (CNpcEvent::*)(int n, int data)> CNpcEvent::_FuncAgitSet;
	static hook_method<bool (CNpcEvent::*)(int func, int parm1, int parm2)> CNpcEvent::_FuncAgitFunc;
	static hook_method<bool (CNpcEvent::*)(int guardian, int n, TokenData& ret)> CNpcEvent::_FuncAgitNpcGet;
	static hook_method<bool (CNpcEvent::*)(int guardian, int n, int data)> CNpcEvent::_FuncAgitNpcSet;
	static hook_method<bool (CNpcEvent::*)(int guildID, TokenData& ret)> CNpcEvent::_FuncIsGuildMaster;
	static hook_method<bool (CNpcEvent::*)(char* name)> CNpcEvent::_FuncAgitRegister;
	static hook_method<bool (CNpcEvent::*)(bool isServerSide, char* color, int fontType, int fontSize, int fontAlign, int fontY, char* str)> CNpcEvent::_FuncBroadcast;
	static hook_method<bool (CNpcEvent::*)(char* filename, int range, int act, int term)> CNpcEvent::_FuncSound;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncGetDamagedItemNum;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncRepairDamagedItem;
	static hook_method<bool (CNpcEvent::*)(int item)> CNpcEvent::_FuncSavePPL;
	static hook_method<bool (CNpcEvent::*)(char* name)> CNpcEvent::_FuncAgitEmblemFlag;
	static hook_method<bool (CNpcEvent::*)(int amount)> CNpcEvent::_FuncChangeEXP;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncServerTime;
	static hook_method<bool (CNpcEvent::*)(int index, TokenData& ret)> CNpcEvent::_FuncGetLocalVarName;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncGetMarried;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncGetGuildName;
	static hook_method<bool (CNpcEvent::*)(int time)> CNpcEvent::_FuncCountDown;
	static hook_method<bool (CNpcEvent::*)(int Range, TokenData& ret)> CNpcEvent::_FuncGetNeighborPcNumber;
	static hook_method<bool (CNpcEvent::*)(int item, int num)> CNpcEvent::_FuncGetNamedItem;
	static hook_method<bool (CNpcEvent::*)(int item, int num)> CNpcEvent::_FuncDropNamedItem;
	static hook_method<bool (CNpcEvent::*)(int item, TokenData& ret)> CNpcEvent::_FuncGetCountOfMyNameItem;
	static hook_method<bool (CNpcEvent::*)(int hair)> CNpcEvent::_FuncChangeHairStyle;
	static hook_method<bool (CNpcEvent::*)(const char* name, int effect)> CNpcEvent::_FuncShowEffect;
	static hook_method<bool (CNpcEvent::*)(int flag)> CNpcEvent::_FuncFalcon;
	static hook_method<bool (CNpcEvent::*)(int flag)> CNpcEvent::_FuncPeco;
	static hook_method<bool (CNpcEvent::*)(int zeny, TokenData& ret)> CNpcEvent::_FuncCheckMaxZeny;
	static hook_method<bool (CNpcEvent::*)(int item, int count, TokenData& ret)> CNpcEvent::_FuncCheckMaxCount;
	static hook_method<bool (CNpcEvent::*)(int item, int count, TokenData& ret)> CNpcEvent::_FuncCheckMaxWeight;
	static hook_method<bool (CNpcEvent::*)(int index, TokenData& ret)> CNpcEvent::_FuncMGetEventItem;
	static hook_method<bool (CNpcEvent::*)(int index, TokenData& ret)> CNpcEvent::_FuncMGetEventZeny;
	static hook_method<bool (CNpcEvent::*)(int index, TokenData& ret)> CNpcEvent::_FuncMGetEventItemName;
	static hook_method<bool (CNpcEvent::*)(int index, TokenData& ret)> CNpcEvent::_FuncMGetEventZenyName;
	static hook_method<bool (CNpcEvent::*)(char* guildname)> CNpcEvent::_FuncCreateGuild;
	static hook_method<bool (CNpcEvent::*)(const char* name, int value)> CNpcEvent::_FuncCreateGlobalVar;
	static hook_method<bool (CNpcEvent::*)(const char* name, TokenData& ret)> CNpcEvent::_FuncGetGlobalVar;
	static hook_method<bool (CNpcEvent::*)(const char* name, int value)> CNpcEvent::_FuncSetGlobalVar;
	static hook_method<bool (CNpcEvent::*)(const char* str1, const char* str2, TokenData& ret)> CNpcEvent::_FuncStrCmp;
	static hook_method<bool (CNpcEvent::*)(const char* str1, const char* str2, TokenData& ret)> CNpcEvent::_FuncStrStr;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncUpgradeGuildLevel;
	static hook_method<bool (CNpcEvent::*)(const char* name, char* value)> CNpcEvent::_FuncCreateGlobalStr;
	static hook_method<bool (CNpcEvent::*)(const char* name, TokenData& ret)> CNpcEvent::_FuncGetGlobalStr;
	static hook_method<bool (CNpcEvent::*)(const char* name, char* value)> CNpcEvent::_FuncSetGlobalStr;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncDivorce;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncPEventGet;
	static hook_method<bool (CNpcEvent::*)(int addPoint, TokenData& ret)> CNpcEvent::_FuncPEventAdd;
	static hook_method<bool (CNpcEvent::*)(int delPoint, TokenData& ret)> CNpcEvent::_FuncPEventDel;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncPCDataMoveToPVP;
	static hook_method<bool (CNpcEvent::*)(int index, TokenData& ret)> CNpcEvent::_FuncMGetEventItemID;
	static hook_method<bool (CNpcEvent::*)(int jobexp)> CNpcEvent::_FuncGetJobExp;
	static hook_method<bool (CNpcEvent::*)(int jobexp)> CNpcEvent::_FuncDropJobExp;
	static hook_method<bool (CNpcEvent::*)(int SKID, TokenData& ret)> CNpcEvent::_FuncChkSkill;
	static hook_method<bool (CNpcEvent::*)(int bodystate, int time)> CNpcEvent::_FuncGetBodyState;
	static hook_method<bool (CNpcEvent::*)(int healthstate, int time)> CNpcEvent::_FuncGetHealthState;
	static hook_method<bool (CNpcEvent::*)(int SKID, int skLevel, int sppoint, int clevel)> CNpcEvent::_FuncUseSkillToPC;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncIsBaby;
	static hook_method<bool (CNpcEvent::*)(int index, TokenData& ret)> CNpcEvent::_FuncGetLotto;
	static hook_method<bool (CNpcEvent::*)(int n1, int n2, int n3, int n4, int n5, int n6)> CNpcEvent::_FuncSetLotto;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncInitLotto;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncOpenAuction;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncOpenMailing;
	static hook_method<bool (CNpcEvent::*)(int time)> CNpcEvent::_FuncStripPC;
	static hook_method<bool (CNpcEvent::*)(int dir, int cell)> CNpcEvent::_FuncPushPC;
	static hook_method<bool (CNpcEvent::*)(int itemID, int count, int x, int y)> CNpcEvent::_FuncItemDown;
	static hook_method<bool (CNpcEvent::*)(int index, int value)> CNpcEvent::_FuncSetNumArray;
	static hook_method<bool (CNpcEvent::*)(int index, TokenData& ret)> CNpcEvent::_FuncGetNumArray;
	static hook_method<bool (CNpcEvent::*)(int small, int big)> CNpcEvent::_FuncShuffleNumbers;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncPartyName;
	static hook_method<bool (CNpcEvent::*)(int percent, int time)> CNpcEvent::_FuncChangeSpeed;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncIsSiegeTime;
	static hook_method<bool (CNpcEvent::*)(int ITID)> CNpcEvent::_FuncConsumeSpecialItem;
	static hook_method<bool (CNpcEvent::*)(int item, int count)> CNpcEvent::_FuncSetItemPartyInMap;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncIsHuntingListFull;
	static hook_method<bool (CNpcEvent::*)(int mob, TokenData& ret)> CNpcEvent::_FuncFindHuntingList;
	static hook_method<bool (CNpcEvent::*)(int mob)> CNpcEvent::_FuncAddHuntingList;
	static hook_method<bool (CNpcEvent::*)(int mob)> CNpcEvent::_FuncDeleteHuntingList;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncDisplayHuntingList;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncDisplayHuntingList2;
	static hook_method<bool (CNpcEvent::*)(int mob, int count)> CNpcEvent::_FuncSetHuntingList;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncClearHuntingList;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FUNCUseHuntingList;
	static hook_method<bool (CNpcEvent::*)(int mob, TokenData& ret)> CNpcEvent::_FUNCCheckHuntingList;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncIsTimeListFull;
	static hook_method<bool (CNpcEvent::*)(int ti, TokenData& ret)> CNpcEvent::_FuncFindTimeList;
	static hook_method<bool (CNpcEvent::*)(int ti)> CNpcEvent::_FuncAddTimeList;
	static hook_method<bool (CNpcEvent::*)(int ti)> CNpcEvent::_FuncDeleteTimeList;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncDisplayTimeList;
	static hook_method<bool (CNpcEvent::*)(int ti, int dt)> CNpcEvent::_FuncSetTimeList;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncClearTimeList;
	static hook_method<bool (CNpcEvent::*)(int x, int y, int type)> CNpcEvent::_FuncChangeCellType;
	static hook_method<bool (CNpcEvent::*)(int x, int y, TokenData& ret)> CNpcEvent::_FuncGetCellType;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncGetPayType;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncGetConnectionArea;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncGetConnectionState;
	static hook_method<bool (CNpcEvent::*)(int mobType)> CNpcEvent::_FuncGetPetEgg;
	static hook_method<bool (CNpcEvent::*)(char* cashShop)> CNpcEvent::_FuncCashItem;
	static hook_method<bool (CNpcEvent::*)(int part, TokenData& ret)> CNpcEvent::_FuncRefinery;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncRelaodMobileEvent;
	static hook_method<bool (CNpcEvent::*)(int part)> CNpcEvent::_FuncSetTempTime;
	static hook_method<bool (CNpcEvent::*)(int part, TokenData& ret)> CNpcEvent::_FuncElapseTempTime;
	static hook_method<bool (CNpcEvent::*)(int itemID, int count, TokenData& ret)> CNpcEvent::_FuncGetInventoryRemainCount;
	static hook_method<bool (CNpcEvent::*)(int qid, TokenData& ret)> CNpcEvent::_FuncIsBeginQuest;
	static hook_method<bool (CNpcEvent::*)(int qid)> CNpcEvent::_FuncSetQuest;
	static hook_method<bool (CNpcEvent::*)(int oldQID, int newQID)> CNpcEvent::_FuncChangQuest;
	static hook_method<bool (CNpcEvent::*)(int qid)> CNpcEvent::_FuncEraseQuest;
	static hook_method<bool (CNpcEvent::*)(int qid)> CNpcEvent::_FuncComplateQuest;
	static hook_method<bool (CNpcEvent::*)(int startQID, int endQID)> CNpcEvent::_FuncCompleteQuest_Between;
	static hook_method<bool (CNpcEvent::*)(int questID)> CNpcEvent::_FuncRecall_CompleteQuest;
	static hook_method<bool (CNpcEvent::*)(int qid, TokenData& ret)> CNpcEvent::_FuncCheckQuest_Hunting;
	static hook_method<bool (CNpcEvent::*)(int qid, TokenData& ret)> CNpcEvent::_FuncCheckQuest_PlayTime;
	static hook_method<bool (CNpcEvent::*)(char* zone, int mobId, char* mobName, int posX, int posY)> CNpcEvent::_FuncCallGuardian;
	static hook_method<bool (CNpcEvent::*)(char* mapName, TokenData& ret)> CNpcEvent::_FuncGetLastSiegeMsg;
	static hook_method<bool (CNpcEvent::*)(char* str, int npcID)> CNpcEvent::_FuncDialog;
	static hook_method<bool (CNpcEvent::*)(int npcID)> CNpcEvent::_FuncWaitDialog;
	static hook_method<bool (CNpcEvent::*)(int npcID)> CNpcEvent::_FuncCloseDialog;
	static hook_method<bool (CNpcEvent::*)(int npcID)> CNpcEvent::_FuncDlgWriteStr;
	static hook_method<bool (CNpcEvent::*)(const char* zone, int x, int y)> CNpcEvent::_FuncMapMove;
	static hook_method<bool (CNpcEvent::*)(const char* in_pMemorialDungeonName, TokenData& out_ret)> CNpcEvent::_FuncMdungeon_Subscription;
	static hook_method<bool (CNpcEvent::*)(const char* in_pMemorialDungeonName, TokenData& out_ret)> CNpcEvent::_FuncMdungeon_Enter;
	static hook_method<bool (CNpcEvent::*)(const char* in_pTitle, const char* in_pMdunTitle, const char* in_pPartyTitle)> CNpcEvent::_FuncMdungeon_List;
	static hook_method<bool (CNpcEvent::*)(const char* in_pPartyName)> CNpcEvent::_FuncMdungeon_Destroy;
	static hook_method<bool (CNpcEvent::*)(const int in_Request, TokenData& out_ret)> CNpcEvent::_FuncMdungeon_OpenState;
	static hook_method<bool (CNpcEvent::*)(const char* name, TokenData& out_ret)> CNpcEvent::_FuncMDungeon_NpcName;
	static hook_method<bool (CNpcEvent::*)(const char* map_name, TokenData& out_ret)> CNpcEvent::_FuncMDungeon_MapName;
	static hook_method<bool (CNpcEvent::*)(NpcSvrNpcInfo* npcInfo, bool isNpc)> CNpcEvent::_FuncMDungeon_Npc;
	static hook_method<bool (CNpcEvent::*)(const char* zone, int x, int y, int w, int h, int num, int mobId, int regenMin, int regenMax, int regenType, char* name)> CNpcEvent::_FuncMDungeon_PutMob;
	static hook_method<bool (CNpcEvent::*)(char* campCode, int x, int y)> CNpcEvent::_FuncCampCode;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncGetCampCode;
	static hook_method<bool (CNpcEvent::*)(int mobID, int x, int y, char* campCode, char* name)> CNpcEvent::_FuncCallCampMob;
	static hook_method<bool (CNpcEvent::*)(int x, int y)> CNpcEvent::_FuncSetRP2;
	static hook_method<bool (CNpcEvent::*)(char* campCode, int x, int y)> CNpcEvent::_FuncMassSetRP2;
	static hook_method<bool (CNpcEvent::*)(int RPNo)> CNpcEvent::_FuncPlayerToRP;
	static hook_method<bool (CNpcEvent::*)(char* campCode, int point)> CNpcEvent::_FuncUpdateCampPoint;
	static hook_method<bool (CNpcEvent::*)(char* campCode, TokenData& ret)> CNpcEvent::_FuncGetCampPoint;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncResetCampPoint;
	static hook_method<bool (CNpcEvent::*)(const char* mobName, int skill, int level, int time, int chatNo)> CNpcEvent::_FuncMyMobSkillUse;
	static hook_method<bool (CNpcEvent::*)(const char* mobName, TokenData& ret)> CNpcEvent::_FuncWhereMyMob_X;
	static hook_method<bool (CNpcEvent::*)(const char* mobName, TokenData& ret)> CNpcEvent::_FuncWhereMyMob_Y;
	static hook_method<bool (CNpcEvent::*)(int x, int y, int range, int skill_id, int level, int time, int msgId)> CNpcEvent::_FuncWideMobSkillUse;
	static hook_method<bool (CNpcEvent::*)(MSG_TYPE7_EIGHTWORD* data)> CNpcEvent::_FuncWideMobSkillUse2;
	static hook_method<bool (CNpcEvent::*)(int type, TokenData& ret)> CNpcEvent::_FuncCheckSiegeTime;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncIsBender;
	static hook_method<bool (CNpcEvent::*)(const char* ask, TokenData& ret)> CNpcEvent::_FuncGetNpcPosition;
	static hook_method<bool (CNpcEvent::*)(const char* color, int time)> CNpcEvent::_FuncProgressBar;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncMercenaryCheck;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncMercenaryType;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncIsFreeServer;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncCheckPartyJob;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncClearBuff;
	static hook_method<bool (CNpcEvent::*)(const char* camp_code, TokenData& ret)> CNpcEvent::_FuncCheckAlive;
	static hook_method<bool (CNpcEvent::*)(NpcSvrNpcInfo* npcInfo)> CNpcEvent::_FuncKVMNpc;
	static hook_method<bool (CNpcEvent::*)(void)> CNpcEvent::_FuncKVMStartAliveCheck;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncPVPRankCheck;
	static hook_method<bool (CNpcEvent::*)(const char* sw)> CNpcEvent::_FuncKvm_Npc_Noti;
	static hook_method<bool (CNpcEvent::*)(const int itemId, const int card1, const int card2, const int card3, const int card4)> CNpcEvent::_FuncGetItemSocket;
	static hook_method<bool (CNpcEvent::*)(const int itemId, const int card1, const int card2, const int card3, const int card4)> CNpcEvent::_FuncGetNonSlotItemSocket;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncGetMyMercenary;
	static hook_method<bool (CNpcEvent::*)(const char* log)> CNpcEvent::_FuncErrorLog;
	static hook_method<bool (CNpcEvent::*)(TokenData& ret)> CNpcEvent::_FuncIsMadogear;
	static hook_method<bool (CNpcEvent::*)(const char* opt)> CNpcEvent::_FuncSetMadogear;
	static hook_method<bool (CNpcEvent::*)(int type)> CNpcEvent::_FuncBattlePlayModeNoti;
	static hook_method<bool (CNpcEvent::*)(const int other, const int par1, const int par2, const int par3)> CNpcEvent::_FuncInterOther;
	static hook_method<void (CNpcEvent::*)(void)> CNpcEvent::_TraceCurPos;
};
